package interfaces;

import java.io.Serializable;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.HashMap;

import rmiClient.Score;
import rmiClient.Token;

public interface Client_ITF extends Remote, Serializable {

	/**
	 * Allow the serveur to add a new neighbor to the client
	 * 
	 * @param newNeighbor
	 * @throws RemoteException
	 */
	public void addNeighbor(Client_ITF newNeighbor) throws RemoteException;

	public Score election(String electionId) throws RemoteException;

	public void electionWithoutDiffusion(Token jeton) throws RemoteException;

	public int getId() throws RemoteException;

	public String getInfo() throws RemoteException;

	public String getIp() throws RemoteException;

	public HashMap<Integer, Client_ITF> getNeighbors() throws RemoteException;

	public int getScoreLocal() throws RemoteException;

	/**
	 * Allow the serveur to remove a neighbors from the client
	 * 
	 * @param newNeighbor
	 * @throws RemoteException
	 */
	public void removeNeighbor(Client_ITF neighbor) throws RemoteException;

	public String startStreamming(String videoName) throws RemoteException;

	public String stopStreamming() throws RemoteException;
}
